1. Field of the Invention
The present invention generally relates to electro-optical readers for reading indicia such as bar code symbols and, more particularly, to reducing the deleterious effect of speckle noise in degrading reading performance.
2. Description of the Related Art
A moving beam electro-optical reader sweeps a laser beam over a scan across a bar code symbol, which is a graphic pattern of interleaving dark-colored bars separated by lighter-colored spaces of different light reflectivities and widths, as considered along a scan direction along which the beam is swept. Information is encoded in the widths of the bars and spaces. The symbol is typically printed on a record medium, for example, paper. A portion of the beam is scattered from the paper and is detected by a photodetector operative for converting the scattered light of variable intensity over the scan into an electrical analog signal which is conventionally processed by front-end electronics of the reader into an electrical digitized signal, and then stored in a memory for subsequent decoding. Once decoded, the information encoded in the symbol can be used for a myriad of purposes, e.g., retrieval from a host computer of data related to the decoded symbol.
Rather than using the analog signal directly to decode the symbol, the derivative of the analog signal is used, primarily to eliminate the effects of ambient light, to simplify signal voltage control, and to simplify edge detection. The derivative of the analog signal is depicted in FIG. 1 as a time domain function, where the X-axis is represented by sample numbers (although it is defacto time), and the Y-axis is represented by millivolts. The bar code signal is the result of a convolution of a bar code waveform and a laser beam profile, which is approximately a Gaussian function.
A typical bar code symbol decoding method comprises detecting the locations of peaks and valleys in the differentiated signal of FIG. 1 (each peak and valley corresponding to an “edge” or transition between a bar and a space in the symbol); measuring the distance between each peak and an adjacent valley (each such distance representing a “width” of a bar), or between each valley and its adjacent peak (each such distance representing a “width” of a space); and decoding the symbol by using the widths in accordance with predetermined symbology rules.
By way of example, FIG. 1 depicts a peak at t=6580, a valley at t=6620, and another peak at t=6700. Thus, a first bar width is 40, and a first space has a width of 80. These values can be normalized to 1× and 2×, and a sequence of bars and spaces might be recognized as a valid bar code pattern. Hence, a symbol can be successfully decoded only if all peaks and valleys are properly identified and accurately located.
In practice, however, the analog signal is corrupted by a wideband noise created by the electronics of the reader and by limited band speckle noise. Speckle noise is a problem in coherent imaging systems, such as electro-optical readers, when a spatially coherent laser beam is scattered from a rough surface of the paper on which the symbol is printed. Light scattering makes the phase values of the scattered light vary rapidly and create signal intensity variations. When the beam moves along the paper, the number of “speckles” in the field of view of the photodetector varies, thereby leading to random fluctuations in the current of the photodetector. Speckle noise is present even if no symbol is printed on the paper. A detailed analysis of speckle noise properties of a bar code reader can be found in an article by Marom and Kresic-Juric, entitled “Analysis of Speckle Noise in Bar-Code Scanning Systems”, J. Opt. Soc. Am. A, Vol. 18, No. 4, April 2001, pp. 888–901.
Speckle noise sometimes causes false peaks and valleys to appear in the differentiated signal of FIG. 1, sometimes causes real peaks and valleys to disappear, and sometimes shifts the locations of the real peaks and valleys, thus changing the widths of the bars and spaces and leading to erroneous reading or even failure to read. Speckle noise also limits miniaturization of the reader and limits the effectiveness of reading symbols with low contrast between the bars and the spaces.
Known filtering techniques, however, are less than satisfactory in removing speckle noise. Fourier domain filtering, i.e., low pass filtering or bandpass filtering, have proven ineffective. Also, averaging several signals is not effective, and neither is the use of non-linear median filters.
U.S. Pat. No. 5,302,813 discloses circuitry for detecting the presence of edges in a symbol and for measuring the strength of each detected edge. This eliminates some false peaks and valleys and, as good as this patented scheme is, it is not effective when peaks and valley are erased completely by speckle noise, or their location is severely affected by speckle noise.
In recent years, the theory of wavelet-based de-noising proposed by Donoho and Johnstone in an article entitled “Ideal Spatial Adaptation by Wavelet Shrinkage”, Dep. of Statistics, Stanford University, CA, June 1992, has received attention and was successfully used to filter colored (spectrum bounded) noise. In particular, such method was used to alleviate speckle noise in SAR radars, as described by J. E. Odegard, H. Guo, M. Lang, C. S. Burrus, and R. O. Welles, “Wavelet Based SAR Speckle Reduction and Image Compression”, Proc. of Symp. on OE/Aerospace Sensing and Dual Use Photonics, Orlando, Fla., April 1995, or ultrasound imaging systems, as described by A. Abdel-Malek and K. W. Rigby, “Enhanced Method for Reducing Ultrasound Speckle Noise Using Wavelet Transform”, U.S. Pat. No. 5,619,998.
However, in the above-mentioned systems, the goal was to use wavelets to filter out the speckles present in a two-dimensional image while preserving the sharp edges of the image. In the case of a bar code reader, the goal is to filter out the photodetector current noise and speckle noise from the bar code signal, and bar code elements, i.e., the bars and spaces, are not easily separable from such noise. Also, it is difficult to accurately measure element size. Moreover, the speed of the laser beam crossing the symbol varies, which results in variations of element size over the symbol. In addition, bar code elements are typically not printed with exactly the same size due to limited printer resolution. In order to accurately represent the sizes of elements of a symbol, there must be perfect synchronization of element size with the sampling rate and wavelet size, and this is difficult to achieve in practice.